package View;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableModel;
import javax.swing.table.AbstractTableModel;

import Controller.ControladorProducto;
import Model.Product;

public class ListadoProducto extends JDialog {

	private JPanel contentPane;
	private JTable table;
	private TableModel tmodelo;
	private List<Product> datos;
	private JButton btnAdd;
	protected Product productoSelecionado;
	private JButton btnClose;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ListadoProveedor frame = new ListadoProveedor();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	private void actualizarModelo() {
		ControladorProducto cont = new ControladorProducto();
		datos = cont.cargarTodos();
		
		tmodelo = new AbstractTableModel() {
			private static final long serialVersionUID = 1L;
	
			@Override
			public int getColumnCount() {
				return 4;
			}
	
			@Override
			public String getColumnName(int col) {
				switch (col) {
				case 0:
					return "Codigo";
				case 1:
					return "Nombre";
				case 2:
					return "Costo";
				case 3:
					return "Iva";
				}
				return null;
			}
	
			@Override
			public int getRowCount() {
				return datos.size();
			}
	
			@Override
			public Object getValueAt(int row, int col) {
				Product obj = datos.get(row);
				switch (col) {
				case 0:
					return obj.getCodProd();
				case 1:
					return obj.getNombre();
				case 2:
					return obj.getCost();
				case 3:
					return obj.getIva();
				}
				return null;
			}
		};
	
		table.setModel(tmodelo);
	}

	public ListadoProducto(JDialog ventana) {
		super(ventana);
		inicializar();
	}


	public ListadoProducto() {
		inicializar();
	}

	private void inicializar() {
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 435, 262);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JScrollPane jScrollPane1 = new JScrollPane();
		contentPane.add(jScrollPane1);
		jScrollPane1.setBounds(29, 11, 359, 176);
		{
			table = new JTable();
			jScrollPane1.setViewportView(table);
			table.setBounds(49, 53, 288, 113);
		}
		
		btnAdd = new JButton("Add");
		btnAdd.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				int fila = table.getSelectedRow();
				productoSelecionado = datos.get(fila);
				ListadoProducto.this.dispose();
			}
		});
		btnAdd.setBounds(29, 190, 68, 23);
		contentPane.add(btnAdd);
		
		btnClose = new JButton("Close");
		btnClose.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			ListadoProducto.this.dispose();
			}
		});
		btnClose.setBounds(103, 190, 68, 23);
		contentPane.add(btnClose);
		
		actualizarModelo();
	}

	public Product getProSelecionado() {
		return productoSelecionado;
	}
	

}